<?php

namespace UFSW\DataBaseBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;

/**
 * Labels
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="UFSW\DataBaseBundle\Entity\LabelsRepository")
 */
class Labels
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="titulo", type="string", length=255)
     */
    private $titulo;

    /**
     * @var string
     *
     * @ORM\Column(name="ayuda", type="string", length=255)
     */
    private $ayuda;

    /**
     * @var integer
     *
     * @ORM\Column(name="tipo", type="integer")
     */
    private $tipo;

    /**
     * @var boolean
     *
     * @ORM\Column(name="requerido", type="boolean")
     */
    private $requerido;
    
    /**
     * @ORM\OneToMany(targetEntity="UFSW\DataBaseBundle\Entity\Labels", mappedBy="labelPadre")
     *
     */
    private $subLabels;

    /**
     * @ORM\ManyToOne(targetEntity="UFSW\DataBaseBundle\Entity\Labels", inversedBy="subLabels")
     * @ORM\JoinColumn(name="label_padre_id", referencedColumnName="id")
     *
     */
    private $labelPadre;
    
    /**
     * @ORM\ManyToOne(targetEntity="UFSW\DataBaseBundle\Entity\Invitacion")
     * @ORM\JoinColumn(name="invitacion_id", referencedColumnName="id")
     */
    private $formularioInvitacion;
    
    public function __construct() {
        $this->subLabels = new ArrayCollection();
    }

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set titulo
     *
     * @param string $titulo
     * @return Labels
     */
    public function setTitulo($titulo)
    {
        $this->titulo = $titulo;

        return $this;
    }

    /**
     * Get titulo
     *
     * @return string 
     */
    public function getTitulo()
    {
        return $this->titulo;
    }

    /**
     * Set ayuda
     *
     * @param string $ayuda
     * @return Labels
     */
    public function setAyuda($ayuda)
    {
        $this->ayuda = $ayuda;

        return $this;
    }

    /**
     * Get ayuda
     *
     * @return string 
     */
    public function getAyuda()
    {
        return $this->ayuda;
    }

    /**
     * Set tipo
     *
     * @param integer $tipo
     * @return Labels
     */
    public function setTipo($tipo)
    {
        $this->tipo = $tipo;

        return $this;
    }

    /**
     * Get tipo
     *
     * @return integer 
     */
    public function getTipo()
    {
        return $this->tipo;
    }

    /**
     * Set requerido
     *
     * @param boolean $requerido
     * @return Labels
     */
    public function setRequerido($requerido)
    {
        $this->requerido = $requerido;

        return $this;
    }

    /**
     * Get requerido
     *
     * @return boolean 
     */
    public function getRequerido()
    {
        return $this->requerido;
    }

    /**
     * Set formularioInvitacion
     *
     * @param integer $formularioInvitacion
     * @return Labels
     */
    public function setFormularioInvitacion($formularioInvitacion)
    {
        $this->formularioInvitacion = $formularioInvitacion;

        return $this;
    }

    /**
     * Get formularioInvitacion
     *
     * @return integer 
     */
    public function getFormularioInvitacion()
    {
        return $this->formularioInvitacion;
    }
    
    public function addLabelPadre(Labels $label)
    {
        $this->labelPadre = $label;
    }
    
    public function addSubLabel(Labels $label)
    {
        $this->subLabels[] = $label;
        $label->addLabelPadre($label);
    }

    public function removeSubLabel($label)
    {
        $this->subLabelss->removeElement($label);
    }
}
